<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MDF Lib: mdf::MdfWriter Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="utillib.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">MDF Lib<span id="projectnumber">&#160;2.2</span>
   </div>
   <div id="projectbrief">Interface against MDF 3/4 files</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search',false);
  $(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacemdf.html">mdf</a></li><li class="navelem"><a class="el" href="classmdf_1_1_mdf_writer.html">MdfWriter</a></li>  </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classmdf_1_1_mdf_writer-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">mdf::MdfWriter Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">

<p>Interface against an MDF writer object.  
 <a href="#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="mdfwriter_8h_source.html">mdfwriter.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac5cc8e6a096cdb641a7a36efbc2793af" id="r_ac5cc8e6a096cdb641a7a36efbc2793af"><td class="memItemLeft" align="right" valign="top"><a id="ac5cc8e6a096cdb641a7a36efbc2793af" name="ac5cc8e6a096cdb641a7a36efbc2793af"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>MdfWriter</b> ()=default</td></tr>
<tr class="memdesc:ac5cc8e6a096cdb641a7a36efbc2793af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ac5cc8e6a096cdb641a7a36efbc2793af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab23f3e5d955e7d86632ff6333cb73871" id="r_ab23f3e5d955e7d86632ff6333cb73871"><td class="memItemLeft" align="right" valign="top"><a id="ab23f3e5d955e7d86632ff6333cb73871" name="ab23f3e5d955e7d86632ff6333cb73871"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><b>~MdfWriter</b> ()</td></tr>
<tr class="memdesc:ab23f3e5d955e7d86632ff6333cb73871"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default destructor. <br /></td></tr>
<tr class="separator:ab23f3e5d955e7d86632ff6333cb73871"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a973fa612b80ab0ff648885aded1f5fc9" id="r_a973fa612b80ab0ff648885aded1f5fc9"><td class="memItemLeft" align="right" valign="top"><a id="a973fa612b80ab0ff648885aded1f5fc9" name="a973fa612b80ab0ff648885aded1f5fc9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>MdfWriter</b> (const <a class="el" href="classmdf_1_1_mdf_writer.html">MdfWriter</a> &amp;writer)=delete</td></tr>
<tr class="separator:a973fa612b80ab0ff648885aded1f5fc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43128e2ef3e901d458cc6367c90d5d79" id="r_a43128e2ef3e901d458cc6367c90d5d79"><td class="memItemLeft" align="right" valign="top"><a id="a43128e2ef3e901d458cc6367c90d5d79" name="a43128e2ef3e901d458cc6367c90d5d79"></a>
<a class="el" href="classmdf_1_1_mdf_writer.html">MdfWriter</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classmdf_1_1_mdf_writer.html">MdfWriter</a> &amp;writer)=delete</td></tr>
<tr class="separator:a43128e2ef3e901d458cc6367c90d5d79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcf1395a8dffe0b70b9e9be0e9731498" id="r_afcf1395a8dffe0b70b9e9be0e9731498"><td class="memItemLeft" align="right" valign="top"><a id="afcf1395a8dffe0b70b9e9be0e9731498" name="afcf1395a8dffe0b70b9e9be0e9731498"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>Name</b> () const</td></tr>
<tr class="memdesc:afcf1395a8dffe0b70b9e9be0e9731498"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the filename without extension and path (stem). <br /></td></tr>
<tr class="separator:afcf1395a8dffe0b70b9e9be0e9731498"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77e457f8f1b7d048a7b575b94a4f3b2f" id="r_a77e457f8f1b7d048a7b575b94a4f3b2f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a77e457f8f1b7d048a7b575b94a4f3b2f">Init</a> (const std::string &amp;filename)</td></tr>
<tr class="memdesc:a77e457f8f1b7d048a7b575b94a4f3b2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initiate the file.  <br /></td></tr>
<tr class="separator:a77e457f8f1b7d048a7b575b94a4f3b2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6896328957c4cba89dbde77669207cb" id="r_ae6896328957c4cba89dbde77669207cb"><td class="memItemLeft" align="right" valign="top"><a id="ae6896328957c4cba89dbde77669207cb" name="ae6896328957c4cba89dbde77669207cb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFileNew</b> () const</td></tr>
<tr class="memdesc:ae6896328957c4cba89dbde77669207cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if this is a new file. <br /></td></tr>
<tr class="separator:ae6896328957c4cba89dbde77669207cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b6d60272eedb8817c7a480620ec5e02" id="r_a6b6d60272eedb8817c7a480620ec5e02"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6b6d60272eedb8817c7a480620ec5e02">PreTrigTime</a> (double pre_trig_time)</td></tr>
<tr class="memdesc:a6b6d60272eedb8817c7a480620ec5e02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the pre-trig time (s) of the writer.  <br /></td></tr>
<tr class="separator:a6b6d60272eedb8817c7a480620ec5e02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a4afa5ae8c5e296a9c86c1e9e35f9af" id="r_a2a4afa5ae8c5e296a9c86c1e9e35f9af"><td class="memItemLeft" align="right" valign="top"><a id="a2a4afa5ae8c5e296a9c86c1e9e35f9af" name="a2a4afa5ae8c5e296a9c86c1e9e35f9af"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>PreTrigTime</b> () const</td></tr>
<tr class="memdesc:a2a4afa5ae8c5e296a9c86c1e9e35f9af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pre-trig time (s). <br /></td></tr>
<tr class="separator:a2a4afa5ae8c5e296a9c86c1e9e35f9af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4863f697ceb1809e37952b59ffd1d5d" id="r_aa4863f697ceb1809e37952b59ffd1d5d"><td class="memItemLeft" align="right" valign="top"><a id="aa4863f697ceb1809e37952b59ffd1d5d" name="aa4863f697ceb1809e37952b59ffd1d5d"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>StartTime</b> () const</td></tr>
<tr class="memdesc:aa4863f697ceb1809e37952b59ffd1d5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns start time in nano-seconds since 1970. <br /></td></tr>
<tr class="separator:aa4863f697ceb1809e37952b59ffd1d5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef88554f1428a4b31233e1bcc88cf2d4" id="r_aef88554f1428a4b31233e1bcc88cf2d4"><td class="memItemLeft" align="right" valign="top"><a id="aef88554f1428a4b31233e1bcc88cf2d4" name="aef88554f1428a4b31233e1bcc88cf2d4"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>StopTime</b> () const</td></tr>
<tr class="memdesc:aef88554f1428a4b31233e1bcc88cf2d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns stop time in nano-seconds since 1970. <br /></td></tr>
<tr class="separator:aef88554f1428a4b31233e1bcc88cf2d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43e622ce5737cf5115aadc32536c4018" id="r_a43e622ce5737cf5115aadc32536c4018"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmdf_1_1_mdf_file.html">MdfFile</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a43e622ce5737cf5115aadc32536c4018">GetFile</a> () const</td></tr>
<tr class="memdesc:a43e622ce5737cf5115aadc32536c4018"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the MDF file interface.  <br /></td></tr>
<tr class="separator:a43e622ce5737cf5115aadc32536c4018"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae1d91dced5a573d6862fc1db77c0468" id="r_aae1d91dced5a573d6862fc1db77c0468"><td class="memItemLeft" align="right" valign="top"><a id="aae1d91dced5a573d6862fc1db77c0468" name="aae1d91dced5a573d6862fc1db77c0468"></a>
<a class="el" href="classmdf_1_1_i_header.html">IHeader</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>Header</b> () const</td></tr>
<tr class="memdesc:aae1d91dced5a573d6862fc1db77c0468"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the header block (HD). <br /></td></tr>
<tr class="separator:aae1d91dced5a573d6862fc1db77c0468"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a515e3740c9f9314e1bcc69a420813652" id="r_a515e3740c9f9314e1bcc69a420813652"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a515e3740c9f9314e1bcc69a420813652">CreateBusLogConfiguration</a> ()</td></tr>
<tr class="memdesc:a515e3740c9f9314e1bcc69a420813652"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates all default DG, CG and CN blocks that bus loggers uses.  <br /></td></tr>
<tr class="separator:a515e3740c9f9314e1bcc69a420813652"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26311c47fba7773402efc64c969de767" id="r_a26311c47fba7773402efc64c969de767"><td class="memItemLeft" align="right" valign="top"><a id="a26311c47fba7773402efc64c969de767" name="a26311c47fba7773402efc64c969de767"></a>
<a class="el" href="classmdf_1_1_i_data_group.html">IDataGroup</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>CreateDataGroup</b> ()</td></tr>
<tr class="memdesc:a26311c47fba7773402efc64c969de767"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new data group (DG) block. <br /></td></tr>
<tr class="separator:a26311c47fba7773402efc64c969de767"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8809959955cbbadc95c0d2a1789eb784" id="r_a8809959955cbbadc95c0d2a1789eb784"><td class="memItemLeft" align="right" valign="top"><a id="a8809959955cbbadc95c0d2a1789eb784" name="a8809959955cbbadc95c0d2a1789eb784"></a>
virtual <a class="el" href="classmdf_1_1_i_channel_conversion.html">IChannelConversion</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>CreateChannelConversion</b> (<a class="el" href="classmdf_1_1_i_channel.html">IChannel</a> *parent)=0</td></tr>
<tr class="memdesc:a8809959955cbbadc95c0d2a1789eb784"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new channel conversion (CC) block. <br /></td></tr>
<tr class="separator:a8809959955cbbadc95c0d2a1789eb784"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99e1aa5229ebbee9ee533e6a9d12445c" id="r_a99e1aa5229ebbee9ee533e6a9d12445c"><td class="memItemLeft" align="right" valign="top"><a id="a99e1aa5229ebbee9ee533e6a9d12445c" name="a99e1aa5229ebbee9ee533e6a9d12445c"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>InitMeasurement</b> ()</td></tr>
<tr class="memdesc:a99e1aa5229ebbee9ee533e6a9d12445c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the sample queue and write any unwritten block to the file. <br /></td></tr>
<tr class="separator:a99e1aa5229ebbee9ee533e6a9d12445c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ae87053a772a46a7ad599f14c2c0521" id="r_a8ae87053a772a46a7ad599f14c2c0521"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8ae87053a772a46a7ad599f14c2c0521">SaveSample</a> (const <a class="el" href="classmdf_1_1_i_channel_group.html">IChannelGroup</a> &amp;group, uint64_t time)</td></tr>
<tr class="memdesc:a8ae87053a772a46a7ad599f14c2c0521"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a sample record for a channel group.  <br /></td></tr>
<tr class="separator:a8ae87053a772a46a7ad599f14c2c0521"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e1c278164191a0f0c21bcb650153aa3" id="r_a3e1c278164191a0f0c21bcb650153aa3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3e1c278164191a0f0c21bcb650153aa3">SaveCanMessage</a> (const <a class="el" href="classmdf_1_1_i_channel_group.html">IChannelGroup</a> &amp;group, uint64_t time, const <a class="el" href="classmdf_1_1_can_message.html">CanMessage</a> &amp;msg)</td></tr>
<tr class="memdesc:a3e1c278164191a0f0c21bcb650153aa3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a CAN message into a bus logger channel group.  <br /></td></tr>
<tr class="separator:a3e1c278164191a0f0c21bcb650153aa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d8644bac04ec6f8189a216967fd3705" id="r_a3d8644bac04ec6f8189a216967fd3705"><td class="memItemLeft" align="right" valign="top"><a id="a3d8644bac04ec6f8189a216967fd3705" name="a3d8644bac04ec6f8189a216967fd3705"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>StartMeasurement</b> (uint64_t start_time)</td></tr>
<tr class="memdesc:a3d8644bac04ec6f8189a216967fd3705"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the measurement. <br /></td></tr>
<tr class="separator:a3d8644bac04ec6f8189a216967fd3705"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c990a789c1c8ac3c9de57a5a7904aa4" id="r_a2c990a789c1c8ac3c9de57a5a7904aa4"><td class="memItemLeft" align="right" valign="top"><a id="a2c990a789c1c8ac3c9de57a5a7904aa4" name="a2c990a789c1c8ac3c9de57a5a7904aa4"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>StartMeasurement</b> (<a class="el" href="classmdf_1_1_i_timestamp.html">ITimestamp</a> &amp;start_time)</td></tr>
<tr class="memdesc:a2c990a789c1c8ac3c9de57a5a7904aa4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the measurement. <br /></td></tr>
<tr class="separator:a2c990a789c1c8ac3c9de57a5a7904aa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2a8836a711bae7b437f1e5aeb6424e7" id="r_ae2a8836a711bae7b437f1e5aeb6424e7"><td class="memItemLeft" align="right" valign="top"><a id="ae2a8836a711bae7b437f1e5aeb6424e7" name="ae2a8836a711bae7b437f1e5aeb6424e7"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>StopMeasurement</b> (uint64_t stop_time)</td></tr>
<tr class="memdesc:ae2a8836a711bae7b437f1e5aeb6424e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the measurement. <br /></td></tr>
<tr class="separator:ae2a8836a711bae7b437f1e5aeb6424e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3efa37375f9f6ce516ca1ed00dc987e9" id="r_a3efa37375f9f6ce516ca1ed00dc987e9"><td class="memItemLeft" align="right" valign="top"><a id="a3efa37375f9f6ce516ca1ed00dc987e9" name="a3efa37375f9f6ce516ca1ed00dc987e9"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>StopMeasurement</b> (<a class="el" href="classmdf_1_1_i_timestamp.html">ITimestamp</a> &amp;start_time)</td></tr>
<tr class="memdesc:a3efa37375f9f6ce516ca1ed00dc987e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the measurement. <br /></td></tr>
<tr class="separator:a3efa37375f9f6ce516ca1ed00dc987e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a225dba7a33abbf4097c79de1a01e7c48" id="r_a225dba7a33abbf4097c79de1a01e7c48"><td class="memItemLeft" align="right" valign="top"><a id="a225dba7a33abbf4097c79de1a01e7c48" name="a225dba7a33abbf4097c79de1a01e7c48"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>FinalizeMeasurement</b> ()</td></tr>
<tr class="memdesc:a225dba7a33abbf4097c79de1a01e7c48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the sample queue and write all unwritten blocks to the file. <br /></td></tr>
<tr class="separator:a225dba7a33abbf4097c79de1a01e7c48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a15689cb48b10b4dc33cf4f145a9a8f" id="r_a0a15689cb48b10b4dc33cf4f145a9a8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0a15689cb48b10b4dc33cf4f145a9a8f">BusType</a> (<a class="el" href="namespacemdf.html#ab408474aca4bb3e6fb04416ec3044d40">MdfBusType</a> type)</td></tr>
<tr class="memdesc:a0a15689cb48b10b4dc33cf4f145a9a8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Only used when doing bus logging. It defines the default channel and channel group names when doing bus logging.  <br /></td></tr>
<tr class="separator:a0a15689cb48b10b4dc33cf4f145a9a8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8347d854796a708b17e3ed585de12d63" id="r_a8347d854796a708b17e3ed585de12d63"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemdf.html#ab408474aca4bb3e6fb04416ec3044d40">MdfBusType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8347d854796a708b17e3ed585de12d63">BusType</a> () const</td></tr>
<tr class="memdesc:a8347d854796a708b17e3ed585de12d63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type of bus the MDF file is associated with. Only used when doing bus logging.  <br /></td></tr>
<tr class="separator:a8347d854796a708b17e3ed585de12d63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1db4cc3f1c198bf4bb21787a2977da2" id="r_aa1db4cc3f1c198bf4bb21787a2977da2"><td class="memItemLeft" align="right" valign="top"><a id="aa1db4cc3f1c198bf4bb21787a2977da2" name="aa1db4cc3f1c198bf4bb21787a2977da2"></a>
std::string_view&#160;</td><td class="memItemRight" valign="bottom"><b>BusTypeAsString</b> () const</td></tr>
<tr class="memdesc:aa1db4cc3f1c198bf4bb21787a2977da2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the bus type as text. <br /></td></tr>
<tr class="separator:aa1db4cc3f1c198bf4bb21787a2977da2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cba5efbf74443c0831289f616e1e174" id="r_a5cba5efbf74443c0831289f616e1e174"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5cba5efbf74443c0831289f616e1e174">StorageType</a> (<a class="el" href="namespacemdf.html#a7e87e4f5b259d4a96040c3729bc2d75c">MdfStorageType</a> type)</td></tr>
<tr class="memdesc:a5cba5efbf74443c0831289f616e1e174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Only used when doing bus logging. It defines how raw data is stored.  <br /></td></tr>
<tr class="separator:a5cba5efbf74443c0831289f616e1e174"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0674674943a903ffff27c91fdfbc6c87" id="r_a0674674943a903ffff27c91fdfbc6c87"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemdf.html#a7e87e4f5b259d4a96040c3729bc2d75c">MdfStorageType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0674674943a903ffff27c91fdfbc6c87">StorageType</a> () const</td></tr>
<tr class="memdesc:a0674674943a903ffff27c91fdfbc6c87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type of data storage the MDF file is associated with. Only used when doing bus logging.  <br /></td></tr>
<tr class="separator:a0674674943a903ffff27c91fdfbc6c87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae49cb5ee7246cbd5e8ef7074c74baf62" id="r_ae49cb5ee7246cbd5e8ef7074c74baf62"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae49cb5ee7246cbd5e8ef7074c74baf62">MaxLength</a> (uint32_t max_length)</td></tr>
<tr class="memdesc:ae49cb5ee7246cbd5e8ef7074c74baf62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets max number of payload data bytes.  <br /></td></tr>
<tr class="separator:ae49cb5ee7246cbd5e8ef7074c74baf62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6a7507cdd19b31939f438fcd432583a" id="r_ae6a7507cdd19b31939f438fcd432583a"><td class="memItemLeft" align="right" valign="top"><a id="ae6a7507cdd19b31939f438fcd432583a" name="ae6a7507cdd19b31939f438fcd432583a"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>MaxLength</b> () const</td></tr>
<tr class="memdesc:ae6a7507cdd19b31939f438fcd432583a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns maximum number of payload data bytes. <br /></td></tr>
<tr class="separator:ae6a7507cdd19b31939f438fcd432583a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89012f9568a274e1d66fb444452256aa" id="r_a89012f9568a274e1d66fb444452256aa"><td class="memItemLeft" align="right" valign="top"><a id="a89012f9568a274e1d66fb444452256aa" name="a89012f9568a274e1d66fb444452256aa"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>CompressData</b> (bool compress)</td></tr>
<tr class="memdesc:a89012f9568a274e1d66fb444452256aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set to true, the data block will be compressed. <br /></td></tr>
<tr class="separator:a89012f9568a274e1d66fb444452256aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1baf7d66ae7faa71c437a3a7274545ee" id="r_a1baf7d66ae7faa71c437a3a7274545ee"><td class="memItemLeft" align="right" valign="top"><a id="a1baf7d66ae7faa71c437a3a7274545ee" name="a1baf7d66ae7faa71c437a3a7274545ee"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>CompressData</b> () const</td></tr>
<tr class="memdesc:a1baf7d66ae7faa71c437a3a7274545ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the data block is compressed. <br /></td></tr>
<tr class="separator:a1baf7d66ae7faa71c437a3a7274545ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a62ed99c7938eea491b4ab7e30fa2a9f8" id="r_a62ed99c7938eea491b4ab7e30fa2a9f8"><td class="memItemLeft" align="right" valign="top"><a id="a62ed99c7938eea491b4ab7e30fa2a9f8" name="a62ed99c7938eea491b4ab7e30fa2a9f8"></a>
static <a class="el" href="classmdf_1_1_i_channel_group.html">IChannelGroup</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>CreateChannelGroup</b> (<a class="el" href="classmdf_1_1_i_data_group.html">IDataGroup</a> *parent)</td></tr>
<tr class="memdesc:a62ed99c7938eea491b4ab7e30fa2a9f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new channel group (CG) block. <br /></td></tr>
<tr class="separator:a62ed99c7938eea491b4ab7e30fa2a9f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00cfdd411a43942ac094fe2cbfbfba14" id="r_a00cfdd411a43942ac094fe2cbfbfba14"><td class="memItemLeft" align="right" valign="top"><a id="a00cfdd411a43942ac094fe2cbfbfba14" name="a00cfdd411a43942ac094fe2cbfbfba14"></a>
static <a class="el" href="classmdf_1_1_i_channel.html">IChannel</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>CreateChannel</b> (<a class="el" href="classmdf_1_1_i_channel_group.html">IChannelGroup</a> *parent)</td></tr>
<tr class="memdesc:a00cfdd411a43942ac094fe2cbfbfba14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new channel (CN) block. <br /></td></tr>
<tr class="separator:a00cfdd411a43942ac094fe2cbfbfba14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-types" name="pro-types"></a>
Protected Types</h2></td></tr>
<tr class="memitem:adadc2746aad9d59686ca5a984404c69f" id="r_adadc2746aad9d59686ca5a984404c69f"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adadc2746aad9d59686ca5a984404c69f">WriteState</a> : uint8_t { <br />
&#160;&#160;<a class="el" href="#adadc2746aad9d59686ca5a984404c69fa686e697538050e4664636337cc3b834f">Create</a>
, <a class="el" href="#adadc2746aad9d59686ca5a984404c69fa95b19f7739b0b7ea7d6b07586be54f36">Init</a>
, <a class="el" href="#adadc2746aad9d59686ca5a984404c69fa5f686f3e8ee5b33ba455d12ddd5bbb0b">StartMeas</a>
, <a class="el" href="#adadc2746aad9d59686ca5a984404c69fa4f243ebd916a3b0988217b1173b49816">StopMeas</a>
, <br />
&#160;&#160;<a class="el" href="#adadc2746aad9d59686ca5a984404c69fafd565de81da1c94807c0b80840ba18b0">Finalize</a>
<br />
 }</td></tr>
<tr class="memdesc:adadc2746aad9d59686ca5a984404c69f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal state of the thread.  <a href="#adadc2746aad9d59686ca5a984404c69f">More...</a><br /></td></tr>
<tr class="separator:adadc2746aad9d59686ca5a984404c69f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3349ed375bcd1ce756b5c595357d4a1" id="r_af3349ed375bcd1ce756b5c595357d4a1"><td class="memItemLeft" align="right" valign="top"><a id="af3349ed375bcd1ce756b5c595357d4a1" name="af3349ed375bcd1ce756b5c595357d4a1"></a>
using&#160;</td><td class="memItemRight" valign="bottom"><b>SampleQueue</b> = std::deque&lt;<a class="el" href="structmdf_1_1_sample_record.html">SampleRecord</a>&gt;</td></tr>
<tr class="memdesc:af3349ed375bcd1ce756b5c595357d4a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample queue. <br /></td></tr>
<tr class="separator:af3349ed375bcd1ce756b5c595357d4a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a721891be071fddad2b6af188219045ac" id="r_a721891be071fddad2b6af188219045ac"><td class="memItemLeft" align="right" valign="top"><a id="a721891be071fddad2b6af188219045ac" name="a721891be071fddad2b6af188219045ac"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>CreateMdfFile</b> ()=0</td></tr>
<tr class="memdesc:a721891be071fddad2b6af188219045ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an MDF file. <br /></td></tr>
<tr class="separator:a721891be071fddad2b6af188219045ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42d796e6c4585807d2750ccbe6439fbe" id="r_a42d796e6c4585807d2750ccbe6439fbe"><td class="memItemLeft" align="right" valign="top"><a id="a42d796e6c4585807d2750ccbe6439fbe" name="a42d796e6c4585807d2750ccbe6439fbe"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>PrepareForWriting</b> ()=0</td></tr>
<tr class="memdesc:a42d796e6c4585807d2750ccbe6439fbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare for writing. <br /></td></tr>
<tr class="separator:a42d796e6c4585807d2750ccbe6439fbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad743448dd8c0cb8e3b789ec6ca14d58b" id="r_ad743448dd8c0cb8e3b789ec6ca14d58b"><td class="memItemLeft" align="right" valign="top"><a id="ad743448dd8c0cb8e3b789ec6ca14d58b" name="ad743448dd8c0cb8e3b789ec6ca14d58b"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>SetDataPosition</b> (std::FILE *file)</td></tr>
<tr class="memdesc:ad743448dd8c0cb8e3b789ec6ca14d58b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data position. <br /></td></tr>
<tr class="separator:ad743448dd8c0cb8e3b789ec6ca14d58b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a784782ad33d0eced9e381dc4268b1edc" id="r_a784782ad33d0eced9e381dc4268b1edc"><td class="memItemLeft" align="right" valign="top"><a id="a784782ad33d0eced9e381dc4268b1edc" name="a784782ad33d0eced9e381dc4268b1edc"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteSignalData</b> (std::FILE *file)</td></tr>
<tr class="memdesc:a784782ad33d0eced9e381dc4268b1edc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write an SD block. <br /></td></tr>
<tr class="separator:a784782ad33d0eced9e381dc4268b1edc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0692dbf74cfab4927b0d506012e43ae" id="r_ad0692dbf74cfab4927b0d506012e43ae"><td class="memItemLeft" align="right" valign="top"><a id="ad0692dbf74cfab4927b0d506012e43ae" name="ad0692dbf74cfab4927b0d506012e43ae"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>StopWorkThread</b> ()</td></tr>
<tr class="memdesc:ad0692dbf74cfab4927b0d506012e43ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the worker thread. <br /></td></tr>
<tr class="separator:ad0692dbf74cfab4927b0d506012e43ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a06601bdf4555985c51d1dcead87a35" id="r_a2a06601bdf4555985c51d1dcead87a35"><td class="memItemLeft" align="right" valign="top"><a id="a2a06601bdf4555985c51d1dcead87a35" name="a2a06601bdf4555985c51d1dcead87a35"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>WorkThread</b> ()</td></tr>
<tr class="memdesc:a2a06601bdf4555985c51d1dcead87a35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Worker thread function. <br /></td></tr>
<tr class="separator:a2a06601bdf4555985c51d1dcead87a35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd5d75e685ecf3f6e7b77eacedeac481" id="r_acd5d75e685ecf3f6e7b77eacedeac481"><td class="memItemLeft" align="right" valign="top"><a id="acd5d75e685ecf3f6e7b77eacedeac481" name="acd5d75e685ecf3f6e7b77eacedeac481"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>TrimQueue</b> ()</td></tr>
<tr class="memdesc:acd5d75e685ecf3f6e7b77eacedeac481"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trims the sample queue. <br /></td></tr>
<tr class="separator:acd5d75e685ecf3f6e7b77eacedeac481"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace4406346036a0740b37f78f61da3c54" id="r_ace4406346036a0740b37f78f61da3c54"><td class="memItemLeft" align="right" valign="top"><a id="ace4406346036a0740b37f78f61da3c54" name="ace4406346036a0740b37f78f61da3c54"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>SaveQueue</b> (std::unique_lock&lt; std::mutex &gt; &amp;lock)</td></tr>
<tr class="memdesc:ace4406346036a0740b37f78f61da3c54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves the queue to file. <br /></td></tr>
<tr class="separator:ace4406346036a0740b37f78f61da3c54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3f37a03e9cf60642af1ca573836e2c8" id="r_ab3f37a03e9cf60642af1ca573836e2c8"><td class="memItemLeft" align="right" valign="top"><a id="ab3f37a03e9cf60642af1ca573836e2c8" name="ab3f37a03e9cf60642af1ca573836e2c8"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>CleanQueue</b> (std::unique_lock&lt; std::mutex &gt; &amp;lock)</td></tr>
<tr class="memdesc:ab3f37a03e9cf60642af1ca573836e2c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush the sample queue. <br /></td></tr>
<tr class="separator:ab3f37a03e9cf60642af1ca573836e2c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac750827df8d944250173df2528f0dcfb" id="r_ac750827df8d944250173df2528f0dcfb"><td class="memItemLeft" align="right" valign="top"><a id="ac750827df8d944250173df2528f0dcfb" name="ac750827df8d944250173df2528f0dcfb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>IncrementNofSamples</b> (uint64_t record_id) const</td></tr>
<tr class="memdesc:ac750827df8d944250173df2528f0dcfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increment the sample counter. <br /></td></tr>
<tr class="separator:ac750827df8d944250173df2528f0dcfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cd4c87e170891cafcfba25081171fa6" id="r_a5cd4c87e170891cafcfba25081171fa6"><td class="memItemLeft" align="right" valign="top"><a id="a5cd4c87e170891cafcfba25081171fa6" name="a5cd4c87e170891cafcfba25081171fa6"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>SetLastPosition</b> (std::FILE *file)=0</td></tr>
<tr class="memdesc:a5cd4c87e170891cafcfba25081171fa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the last file position. <br /></td></tr>
<tr class="separator:a5cd4c87e170891cafcfba25081171fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ab826f4056726222307602355e4949c79" id="r_ab826f4056726222307602355e4949c79"><td class="memItemLeft" align="right" valign="top">std::atomic&lt; <a class="el" href="#adadc2746aad9d59686ca5a984404c69f">WriteState</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab826f4056726222307602355e4949c79">write_state_</a></td></tr>
<tr class="memdesc:ab826f4056726222307602355e4949c79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keeps track of the worker thread state.  <br /></td></tr>
<tr class="separator:ab826f4056726222307602355e4949c79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b75266333ae91f1091d5860e718797f" id="r_a2b75266333ae91f1091d5860e718797f"><td class="memItemLeft" align="right" valign="top"><a id="a2b75266333ae91f1091d5860e718797f" name="a2b75266333ae91f1091d5860e718797f"></a>
std::unique_ptr&lt; <a class="el" href="classmdf_1_1_mdf_file.html">MdfFile</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mdf_file_</b></td></tr>
<tr class="memdesc:a2b75266333ae91f1091d5860e718797f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds the actual file object. <br /></td></tr>
<tr class="separator:a2b75266333ae91f1091d5860e718797f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a862e5393e4d212b9ff96c1acbf3b1270" id="r_a862e5393e4d212b9ff96c1acbf3b1270"><td class="memItemLeft" align="right" valign="top"><a id="a862e5393e4d212b9ff96c1acbf3b1270" name="a862e5393e4d212b9ff96c1acbf3b1270"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>filename_</b></td></tr>
<tr class="memdesc:a862e5393e4d212b9ff96c1acbf3b1270"><td class="mdescLeft">&#160;</td><td class="mdescRight">Full name of file with path and extension. <br /></td></tr>
<tr class="separator:a862e5393e4d212b9ff96c1acbf3b1270"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bdf7185c7edb044c1d8ee2a315e1c86" id="r_a0bdf7185c7edb044c1d8ee2a315e1c86"><td class="memItemLeft" align="right" valign="top"><a id="a0bdf7185c7edb044c1d8ee2a315e1c86" name="a0bdf7185c7edb044c1d8ee2a315e1c86"></a>
std::atomic&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>pre_trig_time_</b> = 0</td></tr>
<tr class="memdesc:a0bdf7185c7edb044c1d8ee2a315e1c86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nanoseconds difference. <br /></td></tr>
<tr class="separator:a0bdf7185c7edb044c1d8ee2a315e1c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb39fac997fbfe3224aa2796e444f96e" id="r_acb39fac997fbfe3224aa2796e444f96e"><td class="memItemLeft" align="right" valign="top"><a id="acb39fac997fbfe3224aa2796e444f96e" name="acb39fac997fbfe3224aa2796e444f96e"></a>
std::atomic&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>start_time_</b> = 0</td></tr>
<tr class="memdesc:acb39fac997fbfe3224aa2796e444f96e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nanoseconds since 1970. <br /></td></tr>
<tr class="separator:acb39fac997fbfe3224aa2796e444f96e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9392b77baecf6dc01410113c7d1124fd" id="r_a9392b77baecf6dc01410113c7d1124fd"><td class="memItemLeft" align="right" valign="top"><a id="a9392b77baecf6dc01410113c7d1124fd" name="a9392b77baecf6dc01410113c7d1124fd"></a>
std::atomic&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>stop_time_</b> = 0</td></tr>
<tr class="memdesc:a9392b77baecf6dc01410113c7d1124fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Nanoseconds since 1970. <br /></td></tr>
<tr class="separator:a9392b77baecf6dc01410113c7d1124fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f1edfaf99512d98f9c4efae55db2aca" id="r_a8f1edfaf99512d98f9c4efae55db2aca"><td class="memItemLeft" align="right" valign="top"><a id="a8f1edfaf99512d98f9c4efae55db2aca" name="a8f1edfaf99512d98f9c4efae55db2aca"></a>
std::thread&#160;</td><td class="memItemRight" valign="bottom"><b>work_thread_</b></td></tr>
<tr class="memdesc:a8f1edfaf99512d98f9c4efae55db2aca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample queue thread. <br /></td></tr>
<tr class="separator:a8f1edfaf99512d98f9c4efae55db2aca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4170285d6cdb2d83c76b6f96f0a14d51" id="r_a4170285d6cdb2d83c76b6f96f0a14d51"><td class="memItemLeft" align="right" valign="top"><a id="a4170285d6cdb2d83c76b6f96f0a14d51" name="a4170285d6cdb2d83c76b6f96f0a14d51"></a>
std::atomic_bool&#160;</td><td class="memItemRight" valign="bottom"><b>stop_thread_</b> = false</td></tr>
<tr class="memdesc:a4170285d6cdb2d83c76b6f96f0a14d51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true to stop the thread. <br /></td></tr>
<tr class="separator:a4170285d6cdb2d83c76b6f96f0a14d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66769aea122dfd6a2b5d5a1a0115e70f" id="r_a66769aea122dfd6a2b5d5a1a0115e70f"><td class="memItemLeft" align="right" valign="top"><a id="a66769aea122dfd6a2b5d5a1a0115e70f" name="a66769aea122dfd6a2b5d5a1a0115e70f"></a>
std::mutex&#160;</td><td class="memItemRight" valign="bottom"><b>locker_</b></td></tr>
<tr class="memdesc:a66769aea122dfd6a2b5d5a1a0115e70f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutex for thread-safe handling of the sample queue. <br /></td></tr>
<tr class="separator:a66769aea122dfd6a2b5d5a1a0115e70f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a205310a2f576e2fb5e4781e3d58079da" id="r_a205310a2f576e2fb5e4781e3d58079da"><td class="memItemLeft" align="right" valign="top"><a id="a205310a2f576e2fb5e4781e3d58079da" name="a205310a2f576e2fb5e4781e3d58079da"></a>
std::condition_variable&#160;</td><td class="memItemRight" valign="bottom"><b>sample_event_</b></td></tr>
<tr class="memdesc:a205310a2f576e2fb5e4781e3d58079da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used internally. <br /></td></tr>
<tr class="separator:a205310a2f576e2fb5e4781e3d58079da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeeefd88243c255f5d89eced5b3f0b4c1" id="r_aeeefd88243c255f5d89eced5b3f0b4c1"><td class="memItemLeft" align="right" valign="top"><a id="aeeefd88243c255f5d89eced5b3f0b4c1" name="aeeefd88243c255f5d89eced5b3f0b4c1"></a>
std::atomic&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>sample_queue_size_</b> = 0</td></tr>
<tr class="memdesc:aeeefd88243c255f5d89eced5b3f0b4c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used to trig flushing to disc. <br /></td></tr>
<tr class="separator:aeeefd88243c255f5d89eced5b3f0b4c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a252be13c93ed60b1d6159b489c441af3" id="r_a252be13c93ed60b1d6159b489c441af3"><td class="memItemLeft" align="right" valign="top"><a id="a252be13c93ed60b1d6159b489c441af3" name="a252be13c93ed60b1d6159b489c441af3"></a>
<a class="el" href="#af3349ed375bcd1ce756b5c595357d4a1">SampleQueue</a>&#160;</td><td class="memItemRight" valign="bottom"><b>sample_queue_</b></td></tr>
<tr class="memdesc:a252be13c93ed60b1d6159b489c441af3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample queue. <br /></td></tr>
<tr class="separator:a252be13c93ed60b1d6159b489c441af3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The MDF writer purpose is to create MDF files. It simplifies the writing into some steps.</p>
<p>The first is to create type of writer. This is done by using the <a class="el" href="classmdf_1_1_mdf_factory.html#a63763d4292e7bb772b42b84aae69bdfb" title="Creates an MDF writer object.">MdfFactory::CreateMdfWriter()</a> function.</p>
<p>The next step is to call the <a class="el" href="#adadc2746aad9d59686ca5a984404c69fa95b19f7739b0b7ea7d6b07586be54f36" title="Start work thread and start collecting samples.">Init()</a> function with a filename with valid path. The Init function will create the actual MDF file object and check if it exist or not. If it exist, it reads in the existing file content so it can be appended.</p>
<p>The next step is to prepare the file for a new measurement. This is done by creating the DG/CG/CN/CC blocks that defines the measurement. Note that it is the last DG block that is the target.</p>
<p>Next step is to call the <a class="el" href="#a99e1aa5229ebbee9ee533e6a9d12445c" title="Initialize the sample queue and write any unwritten block to the file.">InitMeasurement()</a> function. This create a thread that handle the queue of samples. The function also write the configuration to the file and closes it.</p>
<p>The user shall know starts adding samples to the queue by first setting the current channel value to each channel and then call the <a class="el" href="#a8ae87053a772a46a7ad599f14c2c0521" title="Saves a sample record for a channel group.">SaveSample()</a> function for each channel group (CG). Note that no samples are saved to the file yet. The max queue size is set to the pre-trig time, see <a class="el" href="#a6b6d60272eedb8817c7a480620ec5e02" title="Sets the pre-trig time (s) of the writer.">PreTrigTime()</a>.</p>
<p>At some point the user shall call the <a class="el" href="#a3d8644bac04ec6f8189a216967fd3705" title="Starts the measurement.">StartMeasurement()</a> function. The sample queue is now saved onto the file. The save rate is actually dependent if <a class="el" href="#a89012f9568a274e1d66fb444452256aa" title="If set to true, the data block will be compressed.">CompressData()</a> is enabled or not. If compression is used the data is saved at the 4MB size or a 10 minute max. If not using compression, the samples are saved each 10 second.</p>
<p>The user shall now call <a class="el" href="#ae2a8836a711bae7b437f1e5aeb6424e7" title="Stops the measurement.">StopMeasurement()</a> which flush out the remaining sample queue. After stopping the queue, the user may add some extra block as event (EV) and attachment (AT) blocks.</p>
<p>The <a class="el" href="#a225dba7a33abbf4097c79de1a01e7c48" title="Stop the sample queue and write all unwritten blocks to the file.">FinalizeMeasurement()</a> function. Stops the thread and write all unwritten blocks to the file. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="adadc2746aad9d59686ca5a984404c69f" name="adadc2746aad9d59686ca5a984404c69f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adadc2746aad9d59686ca5a984404c69f">&#9670;&#160;</a></span>WriteState</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">enum class <a class="el" href="#adadc2746aad9d59686ca5a984404c69f">mdf::MdfWriter::WriteState</a> : uint8_t</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="adadc2746aad9d59686ca5a984404c69fa686e697538050e4664636337cc3b834f" name="adadc2746aad9d59686ca5a984404c69fa686e697538050e4664636337cc3b834f"></a>Create&#160;</td><td class="fielddoc"><p>Only at first measurement. </p>
</td></tr>
<tr><td class="fieldname"><a id="adadc2746aad9d59686ca5a984404c69fa95b19f7739b0b7ea7d6b07586be54f36" name="adadc2746aad9d59686ca5a984404c69fa95b19f7739b0b7ea7d6b07586be54f36"></a>Init&#160;</td><td class="fielddoc"><p>Start work thread and start collecting samples. </p>
</td></tr>
<tr><td class="fieldname"><a id="adadc2746aad9d59686ca5a984404c69fa5f686f3e8ee5b33ba455d12ddd5bbb0b" name="adadc2746aad9d59686ca5a984404c69fa5f686f3e8ee5b33ba455d12ddd5bbb0b"></a>StartMeas&#160;</td><td class="fielddoc"><p>Start saving samples to file. </p>
</td></tr>
<tr><td class="fieldname"><a id="adadc2746aad9d59686ca5a984404c69fa4f243ebd916a3b0988217b1173b49816" name="adadc2746aad9d59686ca5a984404c69fa4f243ebd916a3b0988217b1173b49816"></a>StopMeas&#160;</td><td class="fielddoc"><p>Stop saving samples. OK to. </p>
</td></tr>
<tr><td class="fieldname"><a id="adadc2746aad9d59686ca5a984404c69fafd565de81da1c94807c0b80840ba18b0" name="adadc2746aad9d59686ca5a984404c69fafd565de81da1c94807c0b80840ba18b0"></a>Finalize&#160;</td><td class="fielddoc"><p>OK to add new DG and CG blocks. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a8347d854796a708b17e3ed585de12d63" name="a8347d854796a708b17e3ed585de12d63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8347d854796a708b17e3ed585de12d63">&#9670;&#160;</a></span>BusType() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemdf.html#ab408474aca4bb3e6fb04416ec3044d40">MdfBusType</a> mdf::MdfWriter::BusType </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">nodiscard</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Type of bus. </dd></dl>

</div>
</div>
<a id="a0a15689cb48b10b4dc33cf4f145a9a8f" name="a0a15689cb48b10b4dc33cf4f145a9a8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a15689cb48b10b4dc33cf4f145a9a8f">&#9670;&#160;</a></span>BusType() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void mdf::MdfWriter::BusType </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemdf.html#ab408474aca4bb3e6fb04416ec3044d40">MdfBusType</a></td>          <td class="paramname"><span class="paramname"><em>type</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>When using the MDF writer as a bus logger, the naming of channel groups and channels are defined in an ASAM standard. The naming is depending on the basic low level protocol. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>Type of basic protocol on the bus. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a515e3740c9f9314e1bcc69a420813652" name="a515e3740c9f9314e1bcc69a420813652"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a515e3740c9f9314e1bcc69a420813652">&#9670;&#160;</a></span>CreateBusLogConfiguration()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mdf::MdfWriter::CreateBusLogConfiguration </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function create all data groups, channel groups and channels for a typical bus logger. Before calling this function, set the bus and storage types as this function uses these settings. </p>

</div>
</div>
<a id="a43e622ce5737cf5115aadc32536c4018" name="a43e622ce5737cf5115aadc32536c4018"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43e622ce5737cf5115aadc32536c4018">&#9670;&#160;</a></span>GetFile()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmdf_1_1_mdf_file.html">MdfFile</a> * mdf::MdfWriter::GetFile </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Returns the MDF file interface. The user may change the file version and the finalize status of the file. By default is the MDF 4.2 or 3.2 version of the file used. </p><dl class="section return"><dt>Returns</dt><dd>Pointer to the MDF file interface. </dd></dl>

</div>
</div>
<a id="a77e457f8f1b7d048a7b575b94a4f3b2f" name="a77e457f8f1b7d048a7b575b94a4f3b2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77e457f8f1b7d048a7b575b94a4f3b2f">&#9670;&#160;</a></span>Init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mdf::MdfWriter::Init </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;</td>          <td class="paramname"><span class="paramname"><em>filename</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Initiate the writer by defining which file it shall work with. Note that appending an existing file is supported. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filename</td><td>Filename with full path. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns true if the function was successful. </dd></dl>

</div>
</div>
<a id="ae49cb5ee7246cbd5e8ef7074c74baf62" name="ae49cb5ee7246cbd5e8ef7074c74baf62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae49cb5ee7246cbd5e8ef7074c74baf62">&#9670;&#160;</a></span>MaxLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void mdf::MdfWriter::MaxLength </td>
          <td>(</td>
          <td class="paramtype">uint32_t</td>          <td class="paramname"><span class="paramname"><em>max_length</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Number of payload data bytes is default set to 8 bytes. Standard CAN may have max 8 byte of data while CAN FD can have up to 64 bytes data bytes. If you should store CAN FD data, you should set the max length to 64 bytes. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">max_length</td><td>Maximum number of payload data bytes. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a6b6d60272eedb8817c7a480620ec5e02" name="a6b6d60272eedb8817c7a480620ec5e02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b6d60272eedb8817c7a480620ec5e02">&#9670;&#160;</a></span>PreTrigTime()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mdf::MdfWriter::PreTrigTime </td>
          <td>(</td>
          <td class="paramtype">double</td>          <td class="paramname"><span class="paramname"><em>pre_trig_time</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the pre-trig time (note seconds). This defines the maximum number of samples the writer holds internally, before the measurement is started. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pre_trig_time</td><td>Pre-trig time in seconds. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a3e1c278164191a0f0c21bcb650153aa3" name="a3e1c278164191a0f0c21bcb650153aa3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e1c278164191a0f0c21bcb650153aa3">&#9670;&#160;</a></span>SaveCanMessage()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mdf::MdfWriter::SaveCanMessage </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmdf_1_1_i_channel_group.html">IChannelGroup</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>group</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint64_t</td>          <td class="paramname"><span class="paramname"><em>time</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmdf_1_1_can_message.html">CanMessage</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>msg</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function replace the normal <a class="el" href="#a8ae87053a772a46a7ad599f14c2c0521" title="Saves a sample record for a channel group.">SaveSample()</a> function. It shall be used when logging CAN/CAN-FD messages into a standard ASAM bus logger configuration.</p>
<p>As before the function creates a record byte array and puts it onto an internal sample buffer. The time shall be absolute time (ns since 1970). </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">group</td><td>Reference to the channel group (CG). </td></tr>
    <tr><td class="paramname">time</td><td>Absolute time nano-seconds since 1970. </td></tr>
    <tr><td class="paramname">msg</td><td>The CAN message to store. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a8ae87053a772a46a7ad599f14c2c0521" name="a8ae87053a772a46a7ad599f14c2c0521"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ae87053a772a46a7ad599f14c2c0521">&#9670;&#160;</a></span>SaveSample()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void mdf::MdfWriter::SaveSample </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmdf_1_1_i_channel_group.html">IChannelGroup</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>group</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint64_t</td>          <td class="paramname"><span class="paramname"><em>time</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Call this function after all channel values have been updated with the latest value. The function creates the a record byte buffer and puts the buffer onto an internal sample buffer.</p>
<p>The time shall be absolute time (nano-seconds since 1970-01-01). Note that the function or actually the internal queue, assume that the samples are added in chronological order. The time will be converted to a relative time before it is stored onto the disc. The will be relative to the start time, see <a class="el" href="#a3d8644bac04ec6f8189a216967fd3705" title="Starts the measurement.">StartMeasurement()</a> function. </p>

</div>
</div>
<a id="a0674674943a903ffff27c91fdfbc6c87" name="a0674674943a903ffff27c91fdfbc6c87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0674674943a903ffff27c91fdfbc6c87">&#9670;&#160;</a></span>StorageType() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemdf.html#a7e87e4f5b259d4a96040c3729bc2d75c">MdfStorageType</a> mdf::MdfWriter::StorageType </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">nodiscard</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Type of data storage. </dd></dl>

</div>
</div>
<a id="a5cba5efbf74443c0831289f616e1e174" name="a5cba5efbf74443c0831289f616e1e174"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cba5efbf74443c0831289f616e1e174">&#9670;&#160;</a></span>StorageType() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void mdf::MdfWriter::StorageType </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacemdf.html#a7e87e4f5b259d4a96040c3729bc2d75c">MdfStorageType</a></td>          <td class="paramname"><span class="paramname"><em>type</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Defines how the raw data (payload) is stored. Only used when doing bus logging.</p>
<p>By default the fixed length storage is used. This means that the data records have fixed length. This is the traditional way of storage. Variable length channels as strings, are stored in separate signal data blocks (SD).</p>
<p>The Variable Length Signal Data (VLSD) is stored in the data block. In practice this option is only used when doing bus logging.</p>
<p>The Maximum Length Signal Data is typicallay used when logging CAN bus traffic </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>Type of storage. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ab826f4056726222307602355e4949c79" name="ab826f4056726222307602355e4949c79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab826f4056726222307602355e4949c79">&#9670;&#160;</a></span>write_state_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::atomic&lt;<a class="el" href="#adadc2746aad9d59686ca5a984404c69f">WriteState</a>&gt; mdf::MdfWriter::write_state_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div>
<div class="line">      <a class="code hl_enumvalue" href="#adadc2746aad9d59686ca5a984404c69fa686e697538050e4664636337cc3b834f">WriteState::Create</a></div>
<div class="ttc" id="aclassmdf_1_1_mdf_writer_html_adadc2746aad9d59686ca5a984404c69fa686e697538050e4664636337cc3b834f"><div class="ttname"><a href="#adadc2746aad9d59686ca5a984404c69fa686e697538050e4664636337cc3b834f">mdf::MdfWriter::WriteState::Create</a></div><div class="ttdeci">@ Create</div><div class="ttdoc">Only at first measurement.</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/mdf/<a class="el" href="mdfwriter_8h_source.html">mdfwriter.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
</small></address>
</div><!-- doc-content -->
</body>
</html>
